package com.dony.shop.service;

import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dony.shop.domain.GlobalModel;
import com.dony.shop.domain.GlobalProduct;
import com.dony.shop.domain.vo.GlobalProductVo;
import com.dony.shop.domain.vo.PriceVo;
import com.dony.shop.domain.vo.PublishShopVo;

import java.util.List;

/**
 * 授权店铺Service接口
 *
 * @author octv
 * @date 2022-03-08
 */
public interface IGlobalProductService extends IService<GlobalProduct> {

    /**
     * 更新全球产品
     *
     * @param merchantId
     * @return
     */
    Boolean syncGlobalItemListByMerchantId(Long merchantId);


    /**
     * 同步近期全球商品
     *
     * @param merchantId
     * @return
     */
    Boolean syncGlobalItemList(Long merchantId);

    /**
     * 单个更新价格
     *
     * @param merchantId
     * @param vo
     * @return
     */
    PriceVo setContryPrice(Long merchantId, PriceVo vo);

    PriceVo setContryPrice(Long merchantId, PriceVo vo, List<String> countrys);

    /**
     * 获取价格
     *
     * @param globalProduct
     * @param ids
     * @return
     */
    List<GlobalProductVo> getPriceList(GlobalProduct globalProduct, Long[] ids);

    /**
     * 通过条件查询列表
     *
     * @param globalProduct
     * @return
     */
    List<GlobalProduct> getListByParam(GlobalProduct globalProduct);



    /**
     * 获取页面呈现对象
     *
     * @param globalProduct
     * @return
     */
    List<GlobalProductVo> getVoListByParam(GlobalProductVo globalProduct);


    /**
     * 单行更新价格
     *
     * @param productVo
     * @return
     */
    GlobalProductVo getLinePriceDetail(GlobalProductVo productVo);


    /**
     * 查询线上的产品列表
     *
     * @param merchantId
     * @param proIds
     * @return
     */
    List<GlobalProduct> getGlobalItemInfo(Long merchantId, Long tenantId, Long[] proIds);


    /**
     * 封装list数据
     *
     * @param originList
     * @param needPrice
     * @return
     */
    List<GlobalProductVo> pakageVoList(List<GlobalProduct> originList, boolean needPrice);

    /**
     * 湖区发布的店铺
     *
     * @param merchantId
     * @param proId
     * @return
     */
    List<PublishShopVo> getPulishedShop(Long merchantId, Long proId);

    /**
     * 封装已经发布的店铺
     *
     * @param merchantId
     * @param globalItemId
     * @return
     */
    List<PublishShopVo> getPulishedShopList(Long merchantId, Long globalItemId);


    JSONObject getPriceJo(PriceVo priceVo);
}
